MSSQL Alfabetische volgorde
Home

MSSQL Alfabetische volgorde

MSSQL Alfabetische volgorde

Als we over vergelijken van tekst spreken kunnen we niet anders dan over alfabetische volgorde of rangschikking spreken. Collation, of in het Nederlands, alfabetisering of alfabetische rangschikking is het ordenen van tekens in de volgorde van het gangbare alfabet. In het Latijnse alfabet zoals dat ook voor de Nederlandse taal wordt gebruikt, zijn er 26 letters die een vaste volgorde kennen. Alfabetisch rangschikken is niet zo gemakkelijk als het lijkt. Hou je rekening met spaties in woorden of niet?

Inleiding

De volgorde van de 26 letters is standaard en houdt geen rekening met hoofd- en kleine letters: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z.

Veel talen, al gebruiken ze het Latijnse schrift, hebben aan deze 26 letters niet voldoende, en dan is de alfabetische volgorde niet universeel dezelfde. Zo worden de letters met diakritische tekens in Scandinavische talen na de Z gesorteerd maar in andere talen direct na de letter zonder diakritisch teken of samen met die letter.

Bij alfabetisch rangschikken door een computer wordt de volgorde door de gebruikte ASCII-tabel of door UTF rangschikking bepaald.

Sommige letters kunnen in een alfabetische volgorde een speciale plaats krijgen, zoals de Nederlandse ij die in sommige systemen, bijvoorbeeld telefoonboeken, als afzonderlijke letter wordt gebruikt. Hieronder zien hiervan een voorbeeld voor het Duits

Om de lijst van geldige alfabetische rangschikkingen te bekomen geef je in MS SQL het volgende statement in:

SELECT * FROM fn_helpcollations()

Dan krijg je een lijst als deze:

Select from fn_helpcollations
select * from fn_helpcollations

Voor het Latijnse alfabet zie je dat er al heel wat mogelijkheden zijn.

Als je een database creëert kan je de alfabetische volgorde bepalen:

In MS Sql:

create database JefInghelbrechtFrans

COLLATE French_CI_AI

Je kan achteraf de collation wel wijzigen:

ALTER DATABASE MyDatabase COLLATE French_CI_AS

Als je wilt weten welke de kenmerken van de alfbetische rangschikken zijn voer het hierboven statement uit:

kenmerken van alfabetische rangschikking in het Frans
kenmerken van alfabetische rangschikking in het Frans

Er bestaand een hele reeks collaties voor het Duits die rangschikken zoals in een telefoonboek:

kenmerken van alfabetische rangschikking in het Duits
kenmerken van alfabetische rangschikking in het Duits

Je kan de collatie per kolom in een tabel bepalen:

-- JI
-- 4 december 2012
-- BoekenFamilienaamCollation.sql
use JefInghelbrecht
go

-- natuurlijke orde
select Voornaam, Familienaam from Boeken
go

-- niet de juiste volgorde, houdt rekening met accent
select Voornaam, Familienaam from Boeken
order by Familienaam
go

alter table Boeken
alter column Familienaam vnarchar(200)
collate Latin1_General_100_CI_AI;
-- CI: case insensitive
-- AI: accent insensitive
go

-- nu wordt er geen rekening gehouden met de accenten
-- en is de lijst alfabetisch
select Voornaam, Familienaam from Boeken
order by Familienaam
go

Om te weten te komen welke collation sequence actief is:

Om de 'collation' volgorde te kennen typ je de volgende instructie:

select serverproperty(N'collation')
go

Opdracht

Als we de collation voor een kolom veranderen is dat slechts van toepassing op de nieuwe data die wordt toegevoegd. Wijzig de tabel Boeken zodat de bestaande data in de kolommen Voornaam, Familienaam en titel volgens de nieuwe collation volgorde geördend worden.

Schrijf minstens twee select statements die het verschil tussen AS en AI, en CS en CI illustreren.

JI
2020-01-26 11:53:53